PHASE 3 · 从零构建路由器

3.5生产加固

从能用到能扛 · 全书收官

整门课的最后一章。3.4 你造出了一个"能用"的功能,但也看到——能用离能扛还有距离。这章讲怎么把你的路由器从"能跑"提升到"能当家里的关键基础设施长期稳定服役":安全上缩小攻击面、性能上扛得住流量、可靠性上让它自己活下去。这既是 Phase 3 的收尾,也是整门课的收官——学完这章,你不只理解路由器、能造路由器,还能造一台真正靠得住的路由器。

一句话定义

生产加固 = 把路由器从"能用"提升到"能扛",围绕三个维度:安全(缩小攻击面 + 密钥管理)、性能(扛住流量 + 降延迟)、可靠性(自动恢复 + 配置备份/回滚)。路由器是关键基础设施,这三样缺一不可。

1从"能用"到"能扛"

3.1–3.4 你造的东西能跑,但:不安全(攻击面没收敛,一个暴露的服务/弱口令就可能被打穿)、性能没优化(高流量下可能卡、延迟飙升)、不可靠(挂了没人知道、重启丢配置、改错难恢复)。一台路由器要长期可靠服役,得在三个维度上都过关:

安全
缩小攻击面 · 加固入口 · 管好密钥
让它难被攻破
性能
连接跟踪调优 · 转发卸载 · 治理 bufferbloat
让它扛得住、跑得快
可靠性
监控 · 自动恢复 · 配置备份回滚
让它自己活下去
关键基础设施的标准

家用电器坏了你换一个;路由器坏了,全家断网、你的自建服务全挂、远程访问(3.4)也没了。它是你数字生活的中枢——就该按"关键基础设施"的标准对待:不是"能开机就行",而是"安全、快、且几乎不会让你失望"

2安全:缩小攻击面

路由器安全的核心是"缩小攻击面 + 守好入口 + 管好密钥"。缩小攻击面(能关的都关):WAN 侧默认拒绝入站(2.4 的 wan input=REJECT,第一道也是最重要的防线)、关掉不用的服务、管理界面别暴露到 WAN、只精确开必要端口。守好入口(SSH 加固):

SSH 加固
PermitRootLogin no             # 禁止 root 直接远程登录
PasswordAuthentication no      # 只允许密钥登录,禁用密码(挡暴力破解)

安全靠密钥,不靠藏端口。管理界面(LuCI/Landscape UI)绝不暴露到公网——要远程管,走你 3.4 建的 WireGuard 进来管(内网访问),而不是把管理口开到 WAN。这正是 3.4 那个功能的绝佳用途。管好密钥:WireGuard 私钥、各种凭证不能明文进 Git(3.2 说配置进 Git,但密钥要单独加密保管,如 sops/agenix),并定期更新软件修补已知漏洞。

安全 = 把学过的原语用好 router-link

你会发现安全加固几乎全是前面学过的东西的"用到位":2.4 的区域策略(wan 拒绝入站)是地基、3.4 的 WireGuard 让你不必暴露管理口就能远程管、3.2 的配置即代码要配上密钥的安全管理。安全不是新知识,是把学过的原语按"最小暴露"的原则用到位。

3性能:扛得住流量

路由器性能的关键是"少让 CPU 逐包处理"。连接跟踪(conntrack)调优(1.3):你的有状态防火墙靠 conntrack 记住每条连接,连接数极多时(P2P、大量设备)表可能被占满导致丢连接——按设备规模调大 nf_conntrack_max、合理设超时。转发卸载(flow offload,性能大杀器):默认每个转发包都走完整 netfilter(1.3),CPU 开销大;卸载让已建立的连接绕过大部分逐包处理:

/etc/config/firewall · config defaults(OpenWRT)
option flow_offloading '1'      # 软件卸载:已建连接走内核快路径
option flow_offloading_hw '1'   # 硬件卸载:支持的网卡/SoC 直接转发

这正好呼应 3.3 Landscape 用 eBPF"对直连流量零开销"——同一个思路:让常规流量走最短路径。治理 bufferbloat(1.5):开 SQM/CAKE(1.5 学过),把上/下行队列管好,避免满载时延迟飙到几百毫秒(打游戏/视频会议卡顿的元凶)——带宽没变,但网络"跟手"多了。

性能优化的统一思想

三项优化背后是同一个道理:路由器最贵的是 CPU 逐包处理,最省的是让包走快路径。conntrack 调优避免状态表拖垮、offload 让已知连接绕过慢路径、SQM 管好队列避免延迟膨胀。理解了这个,你就知道任何路由器性能问题往哪查——是不是 CPU 在逐包硬扛?能不能让这类流量走得更省?

4可靠性:自己活下去

可靠性的核心是"坏了能自愈、坏了你能知道、坏了能快速恢复"。坏了能知道(监控):至少要有关键服务状态、WAN 是否在线、资源使用(CPU/内存/conntrack)、日志——一台没监控的路由器,你只能等"全家喊断网"才知道出事。坏了能自愈(自动恢复):看门狗(watchdog)在卡死时自动重启、procd 管服务重启(2.1)、关键服务(WireGuard/dnsmasq)配自动重连、WAN 断线自动重拨(2.6)。坏了能快速恢复(备份 + 回滚)——这是 3.1/3.2 那条线的最终答案:

  • 配置备份:OpenWRT 定期导出 /etc/config、NixOS 配置进 Git——换机/重装能一键重建;
  • 回滚:NixOS 的"选上一代"(3.2)、OpenWRT 的配置快照——改坏了秒回;
  • 这就闭环了 3.1 提的"运行时状态重启即失"问题:生产路由器的配置必须持久、可备份、可回滚
三条伏笔在此收束 router-link

可靠性把前面几条线全收了:2.1 的 procd 自启/守护、2.6 的 WAN 自动重连、3.1 的持久化问题、3.2 的声明式回滚。一台生产级路由器 = 你懂的所有原语 + "让它在你不看的时候也稳稳运行"的这层保障。到这,你手里的不再是"一个能跑的路由器",而是"一台可以托付家里网络的可靠基础设施"

本章小结

  • 生产加固 = 把路由器从"能用"提升到"能扛",三维度:安全、性能、可靠性——关键基础设施缺一不可。
  • 安全:缩小攻击面(wan 拒绝入站 2.4、关无用服务/端口)、加固 SSH(密钥登录、禁密码)、管理口走 WireGuard 不暴露公网(3.4)、密钥安全管理(不明文进 Git,3.2)。
  • 性能:conntrack 调优(1.3,避免状态表爆)、开转发卸载(flow offload,让已建连接走快路径,呼应 3.3 eBPF)、治理 bufferbloat(SQM/CAKE,1.5)。核心:少让 CPU 逐包处理。
  • 可靠性:监控(坏了能知道)、自动恢复(watchdog/重连,procd 2.1、WAN 重拨 2.6)、配置备份+回滚(3.1/3.2 那条线的最终答案)。
  • 安全/可靠性几乎全是"把学过的原语按最小暴露 + 自愈原则用到位";加固不是新知识,是把课程学的东西做到生产标准

动手练习

  1. 给你(要造的/现有的)路由器列一份"生产加固清单":安全 3 项、性能 2 项、可靠性 3 项,各写清"现状 → 目标 → 怎么做"。这份清单就是你的路由器从玩具到基础设施的路线图。
  2. 思考题:为什么"管理界面走 WireGuard(3.4)而不是开到公网"同时提升了安全和可靠性?(安全:管理口不暴露,攻击面小;可靠:你在任何地方都能安全地远程管理/救火。)
  3. (有路由器时)做三件最高性价比的加固:SSH 改密钥登录、开 flow offload(若支持)、开 SQM,前后对比体感(延迟、满载表现)。
  4. 进阶:把整门课的知识画成一张"我的路由器全景图"——从 Phase 0 的数据包、Phase 1 的内核原语、Phase 2 的系统组织、到 Phase 3 你自己的构建与加固,标出每一块你用到的概念。这张图就是你"从零到路由器"走过的全程。
✦ 从零到路由器 · 全书完结

你走完了这条路

回头看看:

Phase 0
你从一个数据包开始,搞懂了分层、链路、路由、传输、应用、NAT、IPv6——网络到底是怎么回事
Phase 1
你亲手操作内核:接口、iproute2、nftables、namespace、tc、隧道——路由器的每项能力,你都在命令行里造过一遍
Phase 2
你解剖了 OpenWRT:从进程到 UCI 架构,到 DHCP/DNS、防火墙、WiFi、WAN、高级功能——一个真实路由器系统的每个零件,你都对到了底层
Phase 3
你自己造:三十行的最小路由器、NixOS 声明式、读懂 Landscape、开发 WireGuard 功能、到今天的生产加固——你从使用者变成了建造者

最开始,路由器对你也许是个会闪灯的黑盒。现在它对你是透明的:你能说出里面每个进程在干什么、每条规则底下发生了什么、每个"高级功能"由哪些原语组成。你不再需要照着教程抄配置——因为你理解了组成一切的那些原语,能把它们组装成任何你需要的东西:一台最小路由器、一个远程访问方案、一张 WireGuard mesh、乃至一套你自己设计的网络。

这就是"从零到路由器"想带你到的地方:不是记住多少配置,而是获得一种能力——面对任何网络系统,你能拆穿它、理解它、重建它。这种能力不会随某个固件版本过时,它是你的了。

网络的世界很大,这门课只是给了你一副能看穿它的眼睛。接下来去哪、造什么,由你决定。

祝你玩得开心。🎉